package com.cmeduSystem.webadmin.app.model;

import com.baomidou.mybatisplus.annotation.*;
import com.cmeduSystem.common.core.annotation.*;
import lombok.Data;

import java.util.Date;
import java.util.Map;

/**
 * 单位管理实体对象。
 *
 * @author xulei
 * @date 2025-09-04
 */
@Data
@TableName(value = "general_unit_basic")
public class GeneralUnitBasic {

    /**
     * ID。
     */
    @AutoCodeField(prefix = "ID", precisionTo = "SECONDS", idWidth = 2)
    @TableId(value = "id")
    private String id;

    /**
     * 单位号。
     */
    @AutoCodeField(prefix = "DW", precisionTo = "DAYS", idWidth = 4)
    @TableField(value = "DWH")
    private String dwh;

    /**
     * 单位名称。
     */
    @TableField(value = "DWMC")
    private String dwmc;

    /**
     * 单位英文名称。
     */
    @TableField(value = "DWYWMC")
    private String dwywmc;

    /**
     * 单位简称。
     */
    @TableField(value = "DWJC")
    private String dwjc;

    /**
     * 单位英文简称。
     */
    @TableField(value = "DWYWJC")
    private String dwywjc;

    /**
     * 单位简拼。
     */
    @TableField(value = "DWJP")
    private String dwjp;

    /**
     * 单位地址。
     */
    @TableField(value = "DWDZ")
    private String dwdz;

    /**
     * 隶属单位号。
     */
    @TableField(value = "LSDWH")
    private String lsdwh;

    /**
     * 单位类别码。
     */
    @TableField(value = "DWLBM")
    private String dwlbm;

    /**
     * 单位办别码。
     */
    @TableField(value = "DWBBM")
    private String dwbbm;

    /**
     * 单位有效标识。
     */
    @TableField(value = "DWYXBS")
    private Integer dwyxbs;

    /**
     * 是否实体。
     */
    @TableField(value = "SFST")
    private String sfst;

    /**
     * 建立年月。
     */
    @TableField(value = "JLNY")
    private Date jlny;

    /**
     * 人事单位号。
     */
    @TableField(value = "RSDWH")
    private String rsdwh;

    /**
     * 机构类别码。
     */
    @TableField(value = "JGLBM")
    private String jglbm;

    /**
     * 创建时间。
     */
    @TableField(value = "create_time")
    private Date createTime;

    /**
     * 更新时间。
     */
    @TableField(value = "update_time")
    private Date updateTime;

    /**
     * 创建用户。
     */
    @TableField(value = "create_user_id")
    private Long createUserId;

    /**
     * 更新用户。
     */
    @TableField(value = "update_user_id")
    private Long updateUserId;

    @RelationDict(
            masterIdField = "dwlbm",
            slaveModelClass = GlobalDictItemCmedu.class,
            slaveIdField = "itemId",
            slaveNameField = "dictCode")
    @TableField(exist = false)
    private Map<String, Object> dwlbmDictMap;
}
